//
//  HomeViewController.swift
//  Swift微博
//
//  Created by 在下叶良辰 on 16/6/2.
//  Copyright © 2016年 谢浩源. All rights reserved.
//

import UIKit

private let identifile = "HomeCell"

class HomeViewController: RootViewController {
    // override 重写父类方法必须要加
    override func viewDidLoad() {
     super.viewDidLoad()
        //在每一个子模块中，使用的自定义cell可能不一样
        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: identifile)
        view.backgroundColor = UIColor.greenColor()
        loadData()
    }
}

extension HomeViewController {
     override func loadData () {
        //是否上拉
        if ispullUp {
            
            // 这边是变量
            let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(2.0 * Double(NSEC_PER_SEC)))
            
            self.footRefreshControl.startAnimating()
            
            // 延迟 2.0 秒 (这里才是延迟方法)
            dispatch_after(delay, dispatch_get_main_queue()){
                let end  = (self.dataArray.last ?? 981) - 1
                let from = end - 19
                var requestArray:[Int] = []
                
                for i in (from...end).reverse() {
                    requestArray.append(i)
                }
                
                self.dataArray += requestArray
                
                self.footRefreshControl.startAnimating()
                self.tableView.reloadData()
                
                self.ispullUp = false
            }
            
        } else {
                
            let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(2.0 * Double(NSEC_PER_SEC)))
            
            dispatch_after(delay, dispatch_get_main_queue()) {
                //模拟下拉刷新的数据
                let from = (self.dataArray.first ?? 1000) + 1
                let end = from + 19
                
                var requestArray: [Int] = []
                
                for i in (from...end).reverse() {
                    requestArray.append(i)
                }
                
                self.dataArray = requestArray + self.dataArray
                self.refreshControl.endRefreshing()
                self.tableView.reloadData()
            }
        }
    }
}

// 延展 - 数据源方法
extension HomeViewController {
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(identifile, forIndexPath: indexPath)
        cell.textLabel?.text = "\(dataArray[indexPath.row])"
        
        return cell
    }
}

// 代理方法
extension HomeViewController {
    
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        
    }
    
    //当某一行的cell将要显示的时候, 会执行该方法
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        // 如果是最后一行 就执行上拉刷新的操作
        if indexPath.row == dataArray.count - 1 {
            ispullUp = true
            loadData()
        }
    }
}